
/*
this使用的三个方法：
this.data  访问当前对象的成员变量
this.func()   访问当前对象的成员方法
this()     调用当前对象的其他构造方法

!!!:this不能调用静态的方法或属性
 */


import java.util.Scanner;

public class DataUtil {
    public int year;
    public int month;
    public int day;


    public DataUtil() {
        this(1999,9,9);//调用其他构造方法  且 必须放在第一行！！！       this调用构造方法
        System.out.println("调用不带参数的构造方法！");
        this.show();                                                       //this调用成员方法
    }
    public DataUtil(int year, int month, int day) {
        this.year = year;
        this.month = month;
        this.day = day;
        System.out.println("调用了带有3个参数的构造方法！");
    }


    public void setDate(int year, int month, int day) {
        this.year = year;    // 加上this表示给当前的对象的属性赋值！！！      this调用成员变量
        this.month = month;  // 加上this表示给当前的对象的属性赋值！！！
        this.day = day;      // 加上this表示给当前的对象的属性赋值！！！
    }
    public void show() {
        System.out.println("年：" + this.year + " 月：" + this.month + " 日：" + this.day);
    }



    public static void main3(String[] args) {
        DataUtil dataUtil = new DataUtil();
    }
    public static void main2(String[] args) {
        DataUtil dataUtil1 = new DataUtil(2022,11,25);//调用构造方法
        dataUtil1.show();
        System.out.println("==========");
        DataUtil dataUtil2 = new DataUtil();

    }
    public static void main1(String[] args) {
        DataUtil dataUtil1 = new DataUtil();
        dataUtil1.setDate(2022,12,20);
        dataUtil1.show();

        DataUtil dataUtil2 = new DataUtil();
        dataUtil2.setDate(2022,11,20);
        dataUtil2.show();

        DataUtil dataUtil3 = new DataUtil();
        dataUtil3.setDate(2022,11,20);
        dataUtil3.show();
    }
}





class Main {
    public static void main4(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNextInt()) {
            int x = scanner.nextInt();
            int y = scanner.nextInt();
            Data data = new Data(x, y);
            System.out.println(data.getX() + data.getY());
        }
    }
}
class Data {
    private int x;
    private int y;
    public Data(int x, int y) {
        this.x = x;
        this.y = y;
    }
    public int getX() {
        return x;
    }
    public int getY() {
        return y;
    }
}
